package com.woniuxy.goods.service;

import com.woniuxy.goods.dto.GroupTypeDto;
import com.woniuxy.goods.entity.GroupType;
import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.goods.param.AddGroupTypeParam;
import com.woniuxy.goods.param.UpdateGroupTypeParam;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 * 类别、属性组绑定服务层接口
 * @author ...
 * @since 2024年05月22日
 */
public interface GroupTypeService extends IService<GroupType> {

    /**
     * 新增属性组、类别绑定
     * @param param 新增类别属性组绑定对象
     * @return 类别属性组绑定dto对象集合
     * @throws Exception
     */
    List<GroupTypeDto> addGroupType(AddGroupTypeParam param) throws Exception;

    /**
     * 通过id删除属性组、类别绑定
     * @param id 类别、属性组绑定信息id
     * @return
     * @throws Exception
     */
    void delGroupTypeById(Integer id);

    /**
     * 通过属性组id删除属性组、类别绑定
     * @param groupId 属性组id
     * @return
     * @throws Exception
     */
    void delGroupTypeByGroupId(Integer groupId);

    /**
     * 通过类别id删除属性组、类别绑定
     * @param catId 类别id
     * @return
     * @throws Exception
     */
    void delGroupTypeByCatId(Integer catId);

    /**
     * 通过id修改属性组、类别绑定
     * @param param 修改类别属性组绑定对象
     * @return 类别属性组绑定dto对象
     * @throws Exception
     */
    GroupTypeDto updateGroupTypeById(UpdateGroupTypeParam param) throws Exception;

    /**
     * 通过类别id修改属性组、类别绑定
     * @param param 新增类别属性组绑定对象
     * @return 类别属性组绑定dto对象集合
     * @throws Exception
     */
    List<GroupTypeDto> updateGroupTypeByCatId(AddGroupTypeParam param) throws Exception;

    /**
     * 通过id查看属性组、类别绑定
     * @param id 类别属性组绑定信息id
     * @return 类别属性组绑定dto对象
     * @throws Exception
     */
    GroupTypeDto findGroupTypeById(Integer id) throws Exception;

    /**
     * 通过属性组id、类别id查看属性组、类别绑定
     * @param subCatId 类别id
     * @param groupId  属性组id
     * @return 类别属性组绑定dto对象
     * @throws Exception
     */
    GroupTypeDto findGroupTypeByCatGroup(Integer subCatId, Integer groupId) throws Exception;

    /**
     * 通过类别id查看属性组、类别绑定
     * @param catId 类别id
     * @return 类别属性组绑定dto对象集合
     * @throws Exception
     */
    List<GroupTypeDto> findGroupTypeByCatId(Integer catId) throws Exception;

    /**
     * 通过属性组id查看属性组、类别绑定
     * @param groupId 属性组id
     * @return 类别属性组绑定dto对象集合
     * @throws Exception
     */
    List<GroupTypeDto> findGroupTypeByGroupId(Integer groupId) throws Exception;
}
